package log

import (
	"fmt"
	"os"
	"time"
)

//Options为traceStacks的配置信息
type Options struct {
	stackAppendLog bool
	stackFileName string
	stackDirectory string
	//日志输出到标准错误输出不输出到文件
	logtostderr bool
	//日志输出到标准错误输出，同时输出到文件
	alsologtostderr bool
}

type Option func(*Options)


var gOpt Options

//Logtostderr日志输出
func Logtostderr(disable bool) Option{
	return func(options *Options) {
		options.logtostderr = disable
	}
}

func Alsologtostderr(disable bool) Option{
	return func(options *Options) {
		options.alsologtostderr = disable
	}
}

//AppendLog是原文件append还是单独一份
func StackAppendLog(appen bool)Option {
	return func(opt *Options) {
		opt.stackAppendLog = appen
	}
}

//Directory的生成目录
func StackDirectory(dir string) Option{
	return func(opt *Options){
		opt.stackDirectory = dir
	}
}

//FileName 为strace的文件名默认为应用程序的名字加上时间
func StackFileName(name string) Option{
	return func(opt *Options) {
		opt.stackFileName = name
	}
}

func getFormatFileName(name string) string{
	host,_ := os.Hostname()
	t := time.Now()
	return fmt.Sprintf("%s.%s.stack.log.%04d%02d%02d-%02d%02d%02d.%d",
		name,
		host,
		t.Year(),
		t.Month(),
		t.Day(),
		t.Hour(),
		t.Minute(),
		t.Second(),
		os.Getpid())
}

